98

Tip 2: Heuristics

We have already seen in Chap. 6 that due to the large amounts of data in bioinformatics,

one tries to use algorithms that are as fast as possible, even if this comes at the expense of

accuracy (heuristics such as BLAST). For informatics tips and tricks for better and faster

programming, the “numerical recipies” as described there are highly recommended.

Another commendable and non-profit activity is “Project Jupyter” to advance freely avail­

able software, open standards and services for interactive work with dozens of program­

ming languages such as Julia, Python and R. For this purpose, Jupyter notebooks and the

JupyterLab were developed, which have a high reusability and good documentation.

Tip 3: Parallelization

Finally, an important technique for complex calculations is to use many processors in

parallel. For this, the computational task must also be “parallelized”, i.e. rewritten in such

a way that the distribution to several processors (or computer nodes) actually saves time

and does not lead to a mess and a lot of additional communication.

There are also particularly suitable programming languages for this purpose (e.g.

Popjava, PopC or the network-friendly web-based environment from the Jupyter note­

books). Another programming language is Julia (https://julialang.org). It was released in

2012 after 3 years of development. It is a higher level Matlab-like programming language

for numerical and scientific computing usable for Mac, LINUX and Windows alike with

quite fast execution speed. The compiler with its own standard library was written in C, C

+ + and Scheme. Important are multimethods, LISP-like macros and metaprogramming,

direct call to C and Python functions. Designed for parallel programming and distributed

computing, co-routines allow easy multithreading by Julia.

These are important ways to equip and use a computer with many processors with

appropriate operating software.

In general, it should be remembered that computers are stronger in a network. Even

simple computers (PCs) can help solve difficult problems via networking on the Internet

when their computing power is not otherwise needed (from SETI@home to Bitcoins to

scientific projects, e.g. https://blog.exabyte.io/enabling-­new-­science-­through-­accessible-

­modeling-­and-­simulations-­6710098a294).

Other Possibilities Include

Virtualization

Alternatively, various LINUX or UNIX computers can be interconnected by suitable soft­

ware to form a virtual, parallel computer (e.g. use of PVM, https://www.csm.ornl.gov/

pvm/). In the meantime, there are also commercial providers of cloud computers, i.e. a

virtual computer environment with many node computers is made available to interested

customers by these providers via the Internet.

8  When Does the Computer Stop Calculating?